#include "bsp_gpio.h"
#include "Delay.h"

void GPIO_config(void)
{
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = KEY1_Pin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(KEY1_GPIO_Port, &GPIO_InitStructure);
}

void LED_Init(void)
{
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = LED1_Pin;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
		GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED1_GPIO_Port, &GPIO_InitStructure);	

	GPIO_SetBits(LED1_GPIO_Port,LED1_Pin);
}


void LED_On(void)
{
	GPIO_ResetBits(LED1_GPIO_Port, LED1_Pin);
}
void LED_Off(void)
{
	GPIO_SetBits(LED1_GPIO_Port,LED1_Pin);
}

void LED_Tog(void)
{
	GPIO_ToggleBits(LED1_GPIO_Port, LED1_Pin);
}

KEYS ScanPressedKey(void)
{
    const uint32_t btnDelay = 20;
    while (1)
    {
#ifdef KEY1_Pin
        if (GPIO_ReadInputDataBit(KEY1_GPIO_Port, KEY1_Pin) == Bit_RESET)
        {
            // Delay_ms(btnDelay);
            if (GPIO_ReadInputDataBit(KEY1_GPIO_Port, KEY1_Pin) == Bit_RESET)
                return KEY1;
        }
#endif

        return KEY_NONE;
    }
}